import request from '../../j-request/request.js'
import {
	getOpenid
} from '@/utils/localStorage.js';
import {
	baseUrl
} from '@/utils/index.js'
import {
	loadCurrentCity
} from '@/utils/city.js';


// #ifdef H5
baseUrl = ''
// #endif
request.setConfig({
	baseUrl: baseUrl,
	debug: true
})

// 请求拦截
request.interceptor.request = (config => {
	// 给data添加全局请求参数uid
	const openid = getOpenid();
	const city = loadCurrentCity();
	// 给header添加全局请求参数token
	if (!config.header.token) {
		config.header.token = openid;
	}
	if (city) {
		config.header.cityId = city.city_id;
	}
	// 添加一个自定义的参数，默认异常请求都弹出一个toast提示
	if (config.toastError === undefined) {
		config.toastError = true
	}
	return config;
})

// 全局的业务拦截
request.interceptor.response = ((res, config) => {
	if (res.errcode === 0 || res.status === 200) {
		res.success = true;
	}
	// if (res.errcode === 500120) {
	// 	if(config.force !==false){
	// 		//必须强制登录
	// 		uni.redirectTo({
	// 			url:"/pagesA/login/login"
	// 		});
	// 	}
	// }
	return res;
})
//忽略的 错误code   500510 没有权限
const ignoreCodes = [500201,500501];
//未登录
const noLoginCodes = [500120];

// 全局的错误异常处理
request.interceptor.fail = ((res, config) => {
	let ret = res;
	let msg = ''
	if (res.statusCode === 200) { // 业务错误
		msg = res.data.errmsg
		ret = res.data
	} else if (res.statusCode > 0) { // HTTP错误
		msg = '服务器异常[' + res.statusCode + ']'
	} else { // 其它错误
		msg = res.errMsg
	}

	if (config.toastError) {
		// if(res.data){
		if (ignoreCodes.includes(res.data.errcode)) {
			return ret;
		}
		if (noLoginCodes.includes(res.data.errcode)) {
			//socket 关闭
			if(getApp().globalData.socket){
				getApp().globalData.socket.closeSocket();
			}
			if(config.force!==false){
				if(uni.getStorageSync('userInfo')){ //拥有个人信息才跳转登录
					if (!uni.getStorageSync('autoGoLoginFlag')) {  
						uni.redirectTo({
							url: '/pagesA/login/login?phoneNumber=' + uni.getStorageSync('userInfo').phoneNumber
						})
						uni.setStorageSync('autoGoLoginFlag', true);
					}
				}
			}
			return ret;
		}
		uni.showToast({
		    title: msg,
		    duration: 2000,
		    icon: 'none'
		})
	}
	return ret;
})

export {
	request
};
